package zdar.entities;

/**
 * This class will provide the groundwork for any actions usable by a unit
 * Two child classes are meleeAction and rangeAction
 * Actions can create an Attack object which are passed to a target for further processing (add any cover penalties, applying damage, etc.)
 * 
 * When using lists of Actions you can use .getClass() for some specific things
 * @author danbye50
 *
 */
public abstract class Action2 {

	private String name;
	private String attribute_dmg, attribute_hit;	// if used as a modifier, will be used in child classes
	private int attribute_dmg_value, attribute_hit_value;	//although if we just use the value straight up things will be simpler (as long as it's updated when the attribute changes)
    private int diceType, dicecount, dicemod;
    private int range1, range2, range3;
    private int rof, clip;
    private int powerPoints;
    private int parryMod;
    
    private Dice dice;	// will eventually use this I hope
   
    public Action2(){
            diceType = 4;
            dicecount = 1;
            dicemod = 0;
            rof = 1;
            clip = 0;
            powerPoints = 0;
            range1 = range2 = range3 = 1;
    }
    
    protected abstract int rollToHit();
    
    protected abstract int rollDmg();
    
    public abstract Attack getAttack(int range);

    
    // Getters and Setters ====================================================================
    // TODO similar thing here, it will be good to just have a constructor or something (but then we need to save all those variables in XML reader... ugh)
    
    public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAttribute_dmg() {
		return attribute_dmg;
	}

	public void setAttribute_dmg(String attribute_dmg) {
		this.attribute_dmg = attribute_dmg;
	}

	public String getAttribute_hit() {
		return attribute_hit;
	}

	public void setAttribute_hit(String attribute_hit) {
		this.attribute_hit = attribute_hit;
	}

	public int getAttribute_dmg_value() {
		return attribute_dmg_value;
	}

	public void setAttribute_dmg_value(int attribute_dmg_value) {
		this.attribute_dmg_value = attribute_dmg_value;
	}

	public int getAttribute_hit_value() {
		return attribute_hit_value;
	}

	public void setAttribute_hit_value(int attribute_hit_value) {
		this.attribute_hit_value = attribute_hit_value;
	}

	public int getDiceType() {
		return diceType;
	}

	public void setDiceType(int diceType) {
		this.diceType = diceType;
	}

	public int getDicecount() {
		return dicecount;
	}

	public void setDicecount(int dicecount) {
		this.dicecount = dicecount;
	}

	public int getDicemod() {
		return dicemod;
	}

	public void setDicemod(int dicemod) {
		this.dicemod = dicemod;
	}

	public int getRange1() {
		return range1;
	}

	public void setRange1(int range1) {
		this.range1 = range1;
	}

	public int getRange2() {
		return range2;
	}

	public void setRange2(int range2) {
		this.range2 = range2;
	}

	public int getRange3() {
		return range3;
	}

	public void setRange3(int range3) {
		this.range3 = range3;
	}

	public int getRof() {
		return rof;
	}

	public void setRof(int rof) {
		this.rof = rof;
	}

	public int getClip() {
		return clip;
	}

	public void setClip(int clip) {
		this.clip = clip;
	}

	public int getPowerPoints() {
		return powerPoints;
	}

	public void setPowerPoints(int powerPoints) {
		this.powerPoints = powerPoints;
	}

	public int getParryMod() {
		return parryMod;
	}

	public void setParryMod(int parryMod) {
		this.parryMod = parryMod;
	}

   


}
